package com.ly.heart.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ly.common.core.domain.AjaxResult;
import com.ly.heart.domain.CustomerEntity;
import com.ly.heart.domain.dto.CustomerAllocDto;
import com.ly.heart.domain.dto.CustomerDto;
import com.ly.heart.domain.dto.CustomerQueryDto;
import com.ly.heart.domain.vo.CustomerVo;

/**
 * 客户Service接口
 *
 * @author cxl
 * @date 2024-05-14
 */
public interface ICustomerService extends IService<CustomerEntity> {
    /**
     * 查询客户
     *
     * @param id 客户主键
     * @return 客户
     */
    CustomerEntity selectCustomerEntityById ( String id );

    /**
     * 查询客户列表
     *
     * @param customerEntity 客户
     * @return 客户集合
     */
    IPage<CustomerVo> selectCustomerEntityList ( CustomerQueryDto customerQueryDto );


    /**
     * 新增客户
     *
     * @param customerVo 客户
     * @return 结果
     */
    AjaxResult draft ( CustomerDto customerDto );

    /**
     * 新增客户
     *
     * @param customerVo 客户
     * @return 结果
     */
    AjaxResult submit ( CustomerEntity customerEntity );

    /**
     * 修改客户
     *
     * @param customerEntity 客户
     * @return 结果
     */
    AjaxResult updateCustomerEntity ( CustomerDto customerDto );

    AjaxResult updateSingle ( CustomerEntity customerEntity );

    /**
     * 批量删除客户
     *
     * @param ids 需要删除的客户主键集合
     * @return 结果
     */
    int deleteCustomerEntityByIds ( String[] ids );

    AjaxResult alloc ( CustomerAllocDto customerAllocDto );

    /**
     * 删除客户信息
     *
     * @param id 客户主键
     * @return 结果
     */
    int deleteCustomerEntityById ( String id );


    AjaxResult disabled ( String id );

}
